/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package byblos.apresentacao.reserva;

import byblos.apresentacao.idioma.InterceptadorIdioma;
import byblos.apresentacao.usuario.InterceptadorLogin;
import byblos.negocio.reserva.Reserva;
import byblos.persistencia.DAO;
import org.vraptor.annotations.Component;
import org.vraptor.annotations.InterceptedBy;
import org.vraptor.annotations.Logic;
import org.vraptor.annotations.Out;

/**
 *
 * @author marano
 */
@Component
@InterceptedBy(value = {InterceptadorIdioma.class, InterceptadorLogin.class})
public class ReservaComponent {

    @Out
    private Reserva reserva;
    @Out
    private String mensagemErro;

    @Logic(parameters = "id")
    public void arquivar(int id) {
        Reserva reserva = new DAO().localizar(Reserva.class, id);
        reserva.arquivar();
        new DAO().salvar(reserva);
    }

    @Logic(parameters = "id")
    public String visualizar(int id) {
        reserva = new DAO().localizar(Reserva.class, id);
        return reserva == null ? "invalid" : "ok";
    }

    @Logic(parameters = "id")
    public void realizar(int id) {
        reserva = new DAO().localizar(Reserva.class, id);
        reserva.setPago(!reserva.isPago());
        new DAO().salvar(reserva);
    }

    @Logic(parameters = "id")
    public String remover(int id) {
        Reserva reserva = new DAO().localizar(Reserva.class, id);
        if (reserva == null) {
            mensagemErro = "Não foi possível localizar a reserva " + id + "!";
            return "invalid";
        }
        new DAO().remover(reserva);
        return "ok";
    }
}
